package top.jiangqiang.qianyi.common.auth.service;

import org.jetbrains.annotations.Nullable;
import org.jspecify.annotations.NullMarked;
import top.jiangqiang.qianyi.common.auth.TokenPlayLoad;
import top.jiangqiang.qianyi.common.constants.auth.Platform;

@NullMarked
public interface AuthService {
    String TOKEN_PLAY_LOAD = "TOKEN_PLAY_LOAD";

    /**
     * 登录，生成token
     *
     * @param userId 指定账号ID
     * @return
     */
    String login(Long userId, Platform platform);

    /**
     * 指定用户退出
     *
     * @param userId 指定账号ID
     */
    void logout(Long userId);

    /**
     * 指定用户退出
     *
     * @param userId 指定账号ID
     */
    void logout(Long userId, Platform platform);

    /**
     * 校验token，校验通过后自动续期时间
     *
     * @param token token
     * @return 校验失败返回null，成功返回负载信息
     */
    @Nullable
    TokenPlayLoad validate(String token);

    /**
     * 给指定token续期
     *
     * @param token
     * @return
     */
    boolean renewTtl(String token);
}
